home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 45 / Amiga Format CD45 (1999-09)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-11].iso / -serious- / comms / other / miamistartstop / miamistartstop2.rexx < prev    next >
OS/2 REXX Batch file  |  1999-08-16  |  72KB  |  4 lines

  1. /* $VER: MSS 2.60 (08/08/99) Miami Controller, Online Info & Program Launching
  2.                                                                               .
  3. */
  4. ;Options Results;Parse Arg Args;NL='0A'x;Title="Miami Start/Stop";Version="v2.60";IF Exists('Libs:rexxreqtools.library')|Exists('Libs/rexxreqtools.library')|Exists('rexxreqtools.library') THEN;DO;IF ~SHOW('L','rexxreqtools.library') THEN Call AddLib('rexxreqtools.library',0,-30,0);End;ELSE;DO;Say 'Unable to open RexxReqTools.library  Please Install Libs:rexxreqtools.library';Exit;End;IF Exists('Libs:rexxsupport.library')|Exists('Libs/rexxsupport.library')|Exists('rexxsupport.library') THEN;DO;IF ~SHOW('L','rexxsupport.library') THEN Call AddLib('rexxsupport.library',0,-30,0);End;ELSE;DO;Say 'Unable To Open RexxSupport.library  Please Install Libs:rexxsupport.library from your Workbench disk';Call rtezrequest('Libs:rexxsupport.library was not found!'||NL||'Please install it from your Workbench disk','O_k',Title Version 'RexxSupport.library Not Found!');Exit;End;IF Exists('Libs:rexxdossupport.library')|Exists('Libs/rexxdossupport.library')|Exists('rexxdossupport.library') THEN;DO;IF ~SHOW('L','rexxdossupport.library') THEN Call AddLib('rexxdossupport.library',0,-30,2);End;ELSE;DO;Say 'Unable To Open RexxDosSupport.library  Please Install Libs:rexxdossupport.library';Call rtezrequest('Libs:rexxdossupport.library was not found!'||NL||'Please install it','O_k',Title Version 'RexxDosSupport.library Not Found!');Exit;End;Template='Settings/M,MiamiExe/K,Always=GUI/S,Startup/K,NoStartup/S,GoStart=RunStart/S,Shutdown/K,NoShutdown/S,GoShut=RunShut/S,Time/K,Wait/K,NoAutoOnline=NAO/S,Phone=PhoneCost/S,NoVerify/S,Expert/S,Details/S,Sync/K,Online/S,Offline/S,Quit/S,ForceQuit/S,Lock/S,UnLock/S,KillGUI/S,DialGUI=ShowDial/S,LargeGUI/S,ReConnect/K,Help=?/S';Call ReadArgs(Args,template);ReRead=0;Call Prefs();IF Help>0 THEN;DO;Italic='m';HiLite='m';Bold='m';Und='m';Plain='';Say NL||Und||Title Version':'||Plain||NL||NL||'Usage:'||NL||'MiamiStartStop' Template||NL||NL||'Where:'||NL||'Settings            - Uses this file as your Miami settings'||NL||'MiamiExe            - Use the file specified as your Miami Executable'||NL||'                       EG: MiamiStartStop MiamiExe=MiamiDx.beta'||NL||'Always / GUI        - Keeps the Miami Start/Stop GUI open until you hit the Depart button.';Say 'Startup             - Will use the file to load programs & send ARexx commands.'||NL||'                       EG: MiamiStartStop Startup=ENV:MSS_Files_2'||NL||'NoStartup           - Will not use any Startup file to load programs.'||NL||'                       It overrides ENV:MSS_Startup and the Startup argument.'||NL||'GoStart / RunStart  - Will run the Startup file straight away if Miami is online already.';Say 'Shutdown            - Will use the file to load programs & send ARexx commands.'||NL||'                       EG: MiamiStartStop Shutdown=ENV:MSS_Kill_2'||NL||'NoShutdown          - Will not use any Shutdown file to load programs & send ARexx commands.'||NL||'                       It overrides ENV:MSS_Shutdown and the Shutdown argument.'||NL||'GoShut / RunShut    - Will run the Shutdown file straight away.';Say 'Time                - Will alter the delay between starting time of loading the programs.'||NL||'                       EG: 6 seconds gap between each program is: Time=6  Default is 5.';Say 'Wait                - Will alter the wait time for Miami to get online before asking what to do.'||NL||'                       Minimum is 20 seconds.  Maximum is 3600 seconds(60 Minutes).  Default is 60 seconds.'||NL||'NoAutoOnline / NAO  - Will not wait for Miami to go AutoOnline.  It will popup the Online window.';Say 'NoVerify            - Will make sure (verify) if you wish to Disconnect/Quit/Force Quit.'||NL||'Expert              - Will remove the general button information above the buttons (Expert menus).';Say 'Details             - Will show you Miami s Online Details if you are online.'||NL||'Sync                - Will let you choose a way to load the Miami phone log (a-)synchronously.'||NL||'                       EG:'||NL||'                        Sync=0 (Default) will load the file A-Sychronously(Good for fast Harddrives [or AFS/PFS2/SFS users]).'||NL||'                        Sync=1 will load the file Synchronously (General use Sync).'||NL||'                        Sync=2 will load the file Synchronously(Best for Very fast CPUs & Very slow HDs)'||NL||'                       Note: It will load the 'Bold||Und'whole'Plain' logfile into memory before working on it.';Say 'Online              - Will put Miami online of you are not online already.'||NL||'Offline             - Will take Miami offline with warnings if you are online.';Say 'Quit                - Will quit Miami with warnings if it is running.'||NL||'ForceQuit           - Will force quit Miami with warnings if it is running.';Say 'Lock                - Will lock the Miami GUI (making the pointer busy).'||NL||'UnLock              - Will unlock the Miami GUI (making the pointer not busy).'||NL||'KillGUI             - Will release Miami s current GUI library so you can flush it, saving memory.';Say 'DialGUI / ShowDial  - Will show the Miami GUI whilst trying to get online.'||NL||'LargeGUI            - Will show all the extra menu options at once at the expense of screen space.';Say 'ReConnect           - Will let you supply a delay (in seconds) before attempting to reconnect'||NL||'                       EG: MiamiStartStop ReConnect=900   - ReConnects Miami after 900 seconds[15 Minutes]'||NL||'Help / ?            - Will show this help information.'||NL;Exit;End;DO i=0 BY 1 FOR settings.count UNTIL Exists(Config);IF Exists(settings.i) THEN Config=AbsolutePath(settings.i);End;PARSE UPPER VERSION f;f=SUBSTR(WORD(f,6),1,2);Time=Compress(Translate(Time,"        ",".,-+*/\#"));IF Time='TIME'|Time='' THEN Time=5;IF ~Datatype(Time,'W') THEN;DO;Call rtezrequest('Time='Time' is not a valid number!'||NL||'Please use a whole positive number'||NL||'Now using the default of 5 Seconds','O_k',Title Version 'Wrong Time Given!',pubs);Time=5;End;Wait=Compress(Translate(Wait,"        ",".,-+*/\#"));IF Wait='WAIT'|Wait='' THEN Wait=60;IF ~Datatype(Wait,'W') THEN;DO;Call rtezrequest('Wait='Wait' is not a valid number!'||NL||'Please use a whole positive number'||NL||'Now using the default of 60 Seconds','O_k',Title Version 'Wrong Wait Given!',pubs);Wait=60;End;STRTSDWN=0;MenuE='Please make your choice:';Start:;Call StatusCheck();IF DATATYPE(Delay,'W') THEN;DO;Delay(Delay*f);ADDRESS MIAMI.1 'ONLINE';Call Depart();End;IF Lock THEN;DO;IF m>0 THEN;DO;ADDRESS MIAMI.1 'LOCKGUI';Call Depart();End;End;IF UnLock THEN;DO;IF m>0 THEN;DO;ADDRESS MIAMI.1 'UNLOCKGUI';Call Depart();End;End;IF KillGUI THEN;DO;IF m>0 THEN;DO;ADDRESS MIAMI.1 'KILLGUI';Call Depart();End;End;IF Details THEN;DO;Call OnlineDetails();Call Depart();End;IF Online&m<2 THEN;DO;IF m=0 THEN;DO;Call MiamiConfig();Call MiamiLoad();Call Online();Call Startup();Call Depart();End;IF m THEN;DO;Call MiamiConfig();Call Online();Call Depart();End;End;IF Offline&m=2 THEN;DO;NoVerify=0;Call DisQuit(1);Call Depart();End;IF Quit&m>0 THEN;DO;NoVerify=0;Call DisQuit(2);Call Depart();End;IF ForceQuit&m>0 THEN;DO;NoVerify=0;Call DisQuit(3);Call Depart();End;IF GoStart THEN;DO;NoStartup=0;STRTSDWN=1;Call Startup();Call Depart();End;IF GoShut THEN;DO;NoShutdown=0;STRTSDWN=1;Call Shutdown();Call Depart();End;IF DATATYPE(ReConnect,'W')&ReConnect>0&ReConnect<3601 THEN;DO;SELECT;WHEN m=1 THEN;DO;ADDRESS MIAMI.1 'GETSETTINGSNAME';Temp=AbsolutePath(result);IF ~Exists(Temp) THEN;DO;Call MiamiConfig();End;Call Delay(f*ReConnect);ADDRESS MIAMI.1 'ONLINE';Call Depart();End;WHEN m=0 THEN;DO;IF NoAutoOnline THEN;DO;Call MiamiConfig();Call MiamiLoad();Call Delay(f*ReConnect);Call OnlineReq();Call Depart();End;ELSE;DO;Call MiamiConfig();Call MiamiLoad();Call Delay(f*ReConnect);ADDRESS MIAMI.1 'ONLINE';Call Startup();Call Depart();End;End;OTHERWISE;Call rtezrequest('Miami is already connected!'||NL||'ReConnection is impossible','O_k',Title Version 'Already Connected',pubs);Call Depart();End;End;ELSE;DO;IF ReConnect~='RECONNECT' THEN;DO;Call rtezrequest('ReConnect='ReConnect' is not a valid number!'||NL||'Please use a whole positive number'||NL||'Example: A number greater then 0(Zero)','O_k',Title Version 'Wrong ReConnect Given',pubs);Call Depart();End;End;SELECT;WHEN m=0 THEN;DO;IF NoAutoOnline THEN;DO;Call MiamiConfig();Call MiamiLoad();Call OnlineReq();Call Depart();End;ELSE;DO;Call MiamiConfig();Call MiamiLoad();Call Startup();Call Depart();End;End;WHEN m=1 THEN;DO;Call MiamiConfig();Call OnlineReq();Call Depart();End;WHEN m=2 THEN;DO;IF Load~=1 THEN;DO;Call OffLineReq();Call Depart();End;End;End;Exit;StatusCheck:;IF Show('P','MIAMI.1') THEN;DO;ADDRESS MIAMI.1 'ISONLINE';SELECT;WHEN rc=0 THEN m=1;WHEN rc=1 THEN m=2;OTHERWISE m=0;End;End;ELSE m=0;Return();Prefs:;IF Exists('ENV:MSS_Prefs') THEN File='ENV:MSS_Prefs';ELSE File='ENVARC:MSS_Prefs';IF Exists(File)&File~='' THEN;DO;Call FileOpen();DataRead=ReadLn(MSS);If Exists(DataRead) THEN MiamiLog=DataRead;DataRead=ReadLn(MSS);Parse Var DataRead Cost' 'Currency' 'Begin' 'Rest;DataRead=ReadLn(MSS);Parse Var DataRead Always1' 'Time1' 'NoAutoOnline1' 'NoVerify1' 'Expert1' 'Wait1' 'Dialing1' 'LargeGUI1' 'Sync1' 'Rest;DataRead=ReadLn(MSS);Parse Var DataRead DOPCost' 'CPCost' 'TCalls' 'MinCharge' 'PeakStart' 'PeakRate' 'ArvoStart' 'ArvoRate' 'ArvoEnd' 'EveningRate' 'WeekEndRate' 'Rest;DataRead=ReadLn(MSS);Parse Var DataRead publoc pubs;DataRead=ReadLn(MSS);Parse Var DataRead ALPHDY' 'DY' 'MNTH' 'YR' 'ZTIME'±'SEP'±'ORDER;DataRead=ReadLn(MSS);Parse Var DataRead StartDay' 'StartMonth' 'StartYear' 'NumMonth' 'PriCost' 'Rest;Call Close(MSS);pubs=Strip(pubs);IF pubs~='' THEN pubs='rt_pubscrname='"'"pubs"'";ELSE pubs='';SELECT;WHEN publoc=1 THEN pubs=pubs||' rt_reqpos=reqpos_centerscr';WHEN publoc=2 THEN pubs=pubs||' rt_reqpos=reqpos_topleftscr';OTHERWISE NOP;End;IF DATATYPE(Cost,'N')&DATATYPE(Begin,'W') THEN Begin=Compress(Begin);ELSE;DO;Begin=0;Cost=0;End;IF Dialing1~=0|Dialing~=1|Dialing~=2 THEN Dialing=0;IF ~DATATYPE(DOPCost,'W')|~DATATYPE(CPCost,'W')|~DATATYPE(TCalls,'W')|~DATATYPE(MinCharge,'N')|~DATATYPE(PeakStart,'W')|~DATATYPE(PeakRate,'N')|~DATATYPE(ArvoStart,'W')|~DATATYPE(ArvoRate,'N')|~DATATYPE(ArvoEnd,'W')|~DATATYPE(EveningRate,'N')|~DATATYPE(WeekendRate,'N') THEN;DO;DOPCost=0;CPCost=0;TCalls=0;End;IF ~DATATYPE(StartDay,'W')|StartDay<1|StartDay>28|~DATATYPE(NumMonth,'W')|NumMonth<0|NumMonth>12 THEN NumMonth=0;ELSE;DO;IF NumMonth>1 THEN;DO;IF ~DATATYPE(StartMonth,'W')|StartMonth<1|StartMonth>12|~DATATYPE(StartYear,'W')|StartYear<1|StartYear>9999 THEN NumMonth=0;End;End;IF ReRead THEN;DO;IF Always1=0|Always1=1 THEN Always=Always1;IF DATATYPE(Time1,'W') THEN Time=Time1;IF NoAutoOnline1=0|NoAutoOnline1=1 THEN NoAutoOnline=NoAutoOnline1;IF NoVerify1=0|NoVerify1=1 THEN NoVerify=NoVerify1;IF Expert1=0|Expert1=1 THEN Expert=Expert1;IF DATATYPE(Wait1,'W')&Wait1>20&Wait1<3601 THEN Time=Time1;IF Dialing1=0 THEN DialGUI=0;IF LargeGUI1=1|LargeGUI1=0 THEN LargeGUI=LargeGUI1;IF DATATYPE(Sync1,'W')&Sync1>=0&Sync1<=2 THEN Sync=Sync1;End;ELSE;DO;IF Always1=1 THEN Always=1;IF ~Datatype(Time,'W')&Datatype(Time1,'W') THEN Time=Time1;IF NoAutoOnline1=1 THEN NoAutoOnline=1;IF NoVerify1=1 THEN NoVerify=1;IF Expert1=1 THEN Expert=1;IF ~Datatype(Wait,'W')&Datatype(Wait1,'W') THEN Time=Time1;IF LargeGUI1=1 THEN LargeGUI=1;IF ~DATATYPE(Sync,'W')|Sync<0|Sync>2 THEN;DO;IF DATATYPE(Sync1,'W')&Sync1>=0&Sync1<=2 THEN Sync=Sync1;ELSE Sync=0;End;End;End;ELSE;DO;IF pubs='PUBS' THEN pubs='';End;IF ~DATATYPE(ALPHDY,'W')|ALPHDY<0|ALPHDY>3|~DATATYPE(DY,'W')|DY<0|DY>1|~DATATYPE(MNTH,'W')|MNTH<0|MNTH>2|~DATATYPE(YR,'W')|YR<0|YR>2|~DATATYPE(ZTIME,'W')|ZTIME<0|ZTIME>4|SEP=''|SEP='SEP'|ORDER=''|ORDER='ORDER' THEN;DO;ALPHDY=2;DY=1;MNTH=2;YR=2;ZTIME=1;SEP='-';ORDER='1 2 3 4 5';End;SELECT;WHEN Dialing1=1 THEN;DO;Dialing0="'KILLGUI'";DialGUI=1;End;WHEN Dialing1=2 THEN;DO;Dialing0="'HIDE'";DialGUI=1;End;OTHERWISE IF DialGUI=1 THEN Dialing0="'KILLGUI'";ELSE DialGUI=0;End;Return();PhoneCosts:;Mins=Mins+1;CurrDay=Left(Date('W',Year.1||Month.1||Day.1,'S'),1);IF CurrDay="S"&DiffDays=0 THEN PCost=((Hours*60)+Mins)-((Hours.1*60)+Mins.1)*WeekEndRate;ELSE;DO;SELECT;WHEN Hours.1<PeakStart&DiffDays=0 THEN;DO;IF Hours>=PeakStart THEN;DO;PCost=((PeakStart*60)-((Hours.1*60)+Mins.1))*EveningRate;IF Hours>=ArvoStart THEN;DO;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;IF Hours>=ArvoEnd THEN;DO;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(ArvoStart*60))*ArvoRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(PeakStart*60))*PeakRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*EveningRate;End;WHEN Hours.1<ArvoStart&Hours.1>=PeakStart&DiffDays=0 THEN;DO;IF Hours>=ArvoStart THEN;DO;PCost=((ArvoStart*60)-(Hours.1*60)+Mins.1)*PeakRate;IF Hours>=ArvoEnd THEN;DO;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(ArvoStart*60))*ArvoRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*PeakRate;End;WHEN Hours.1<ArvoEnd&Hours.1>=ArvoStart&DiffDays=0 THEN;DO;IF Hours>=ArvoEnd THEN;DO;PCost=((ArvoEnd*60)-((Hours.1*60)+Mins.1))*ArvoRate;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*ArvoRate;End;WHEN Hours.1>=ArvoEnd&DiffDays=0 THEN PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*EveningRate;WHEN DiffDays>0 THEN;DO;WDay=(Date('I',Year.1||Month.1||Day.1,'S'))+1;IF DiffDays>1 THEN;DO UNTIL DiffDays=1;CurrDay=Left(Date('W',WDay),1);IF CurrDay='S' THEN PCost=1440*WeekEndRate;ELSE;DO;PCost=(((PeakStart*60)-0)*EveningRate)+PCost;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;DiffDays=DiffDays-1;WDay=WDay+1;End;IF Left(Date('W',Date('I',Year.1||Month.1||Day.1,'S')),1)='S' THEN PCost=1440-((Hours.1*60)+Mins.1)*WeekEndRate;ELSE;DO;SELECT;WHEN Hours.1<PeakStart THEN;DO;PCost=(((PeakStart*60)-((Hours.1*60)+Mins.1))*EveningRate)+PCost;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;WHEN Hours.1<ArvoStart&Hours.1>=PeakStart THEN;DO;PCost=(((ArvoStart*60)-((Hours.1*60)+Mins.1))*PeakRate)+PCost;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;WHEN Hours.1<ArvoEnd&Hours.1>=ArvoStart THEN;DO;PCost=((((ArvoEnd*60)-((Hours.1*60)+Mins.1))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;WHEN Hours.1>=ArvoEnd THEN PCost=((1440-(Hours.1*60))*EveningRate)+PCost;End;End;Hours.1='00';Mins.1='00';IF Left(Date('W',Date('I',Year.0||Month.0||Day.0,'S')),1)='S' THEN PCost=(((Hours*60)+Mins)*WeekEndRate)+PCost;ELSE;DO;IF Hours>=PeakStart THEN;DO;PCost=((PeakStart*60)*EveningRate)+PCost;IF Hours>=ArvoStart THEN;DO;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;IF Hours>=ArvoEnd THEN;DO;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(ArvoStart*60))*ArvoRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(PeakStart*60))*PeakRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)*EveningRate)+PCost;End;End;OTHERWISE Call Error();End;End;IF PCost<MinCharge THEN PCost=MinCharge;IF NumMonth~=0 THEN;DO;IF NumMonth>0 THEN;DO;IF Pos('Online(',DataRead.1)=1 THEN Parse Var DataRead.1 Rest9': 'Day.1'.'Month.1'.'Year.1':'Rest;ELSE Parse Var DataRead.1 Rest9': 'Day.1'.'Month.1'.'Year.1 Rest;IF NumMonth=1 THEN;DO;IF ~DATATYPE(CurrMonth,'W')|~DATATYPE(CurrYear,'W') THEN;DO;CurrMonth=SMonth;CurrYear=SYear;End;IF Month.1>CurrMonth&Day.1>=StartDay THEN;DO;CurrMonth=Month.1;PMonthC=MonthC+Temp;MonthC=PCost-Temp;End;IF Year.1>CurrYear&Month.1<CurrMonth&Day.1>=StartDay THEN;DO;CurrMonth=Month.1;PMonthC=MonthC+Temp;MonthC=PCost-Temp;End;MonthC=MonthC+(PCost-Temp);Temp=0;End;ELSE;DO;IF ~DATATYPE(CurrMonth,'W')|~DATATYPE(CurrYear,'W') THEN;DO;CurrMonth=StartMonth;CurrYear=StartYear;End;DO FOREVER;IF Length(CurrMonth)=1 THEN CurrMonth='0'||CurrMonth;IF Length(StartDay)=1 THEN StartDay='0'||StartDay;IF CurrYear||CurrMonth||StartDay>Year.1||Month.1||Day.1 THEN;DO;DO FOREVER;CheckYear=CurrYear;CheckMonth=CurrMonth-NumMonth;IF CheckMonth<1 THEN;DO;CheckMonth=CheckMonth+12;CheckYear=CheckYear-1;End;IF Length(CheckMonth)=1 THEN CheckMonth='0'||CheckMonth;IF CheckYear||CheckMonth||StartDay>Year.1||Month.1||Day.1 THEN;DO;CurrYear=CheckYear;CurrMonth=CheckMonth;End;ELSE Leave;End;Leave;End;ELSE;DO;CurrMonth=CurrMonth+NumMonth;PMonthC=MonthC+Temp;MonthC=0;Temp=0;IF CurrMonth>12 THEN;DO;CurrMonth=CurrMonth-12;CurrYear=CurrYear+1;End;End;End;MonthC=MonthC+(PCost-Temp);Temp=0;End;End;End;IF PCost<MinCharge THEN PCost=MinCharge;IF DOPCost=1 THEN TPCost=PCost+TPCost;Return();MiamiConfig:;IF m=1 THEN;DO;ADDRESS MIAMI.1 'GETSETTINGSNAME';Temp=AbsolutePath(result);IF Exists(Temp) THEN;DO;Config=AbsolutePath(Config);IF Temp=Config|Config='' THEN;DO;Config=Temp;IF Expert=1 THEN Menu='';ELSE Menu=NL||NL||'Do you want to Re-Load it, use the Already Loaded version,'||NL||'Choose another settings file or Alter the GUI status?';Call rtezrequest('The settings 'Config||NL||'is loaded into Miami'||Menu,'_Re-Load|_Use Loaded|_Another|_Offline Menu|Con_trol|_Cancel',Title Version 'Settings Requestor','rtez_defaultresponse=1' pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=1 THEN Temp='';WHEN rtresult=2 THEN NOP;WHEN rtresult=3 THEN;DO;Temp='';Call ChooseConfig();End;WHEN rtresult=4 THEN;DO;Call OfflineReq();Call Depart();End;WHEN rtresult=5 THEN;DO;Call GUICOntrol();Call MiamiConfig();End;WHEN rtresult=6 THEN Call Depart();End;End;ELSE;DO;IF Exists('Miami:Miami.default') THEN;DO;MiamiDef='_Miami.default|';MiamiReq='Miami.default - will use the Miami:Miami.default settings';End;ELSE;DO;MiamiDef='';MiamiReq='';End;IF Expert=1 THEN Menu='';ELSE Menu=NL||NL||'GUI - will let you alter the Miami/MSS GUI to save the settings'||NL||'Another - will let you choose the settings file from a requestor'MiamiReq||NL||NL||'What do you wish to do?';Call rtezrequest('Already Loaded will use the current settings in Miami called:'||NL||' 'Temp||NL||NL||'Arguement will use the supplied settings:'||NL||' 'Config||Menu,'_Already Loaded|A_rguement|A_nother|_Offline Menu|'MiamiDef'Con_trol|_Cancel',Title Version 'Pre-Loaded Settings Menu','rtez_defaultresponse=2' pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=1 THEN Config=Temp;WHEN rtresult=2 THEN NOP;WHEN rtresult=3 THEN;DO;Temp='';Call ChooseConfig();End;WHEN rtresult=4 THEN;DO;Call OfflineReq();Call Depart();End;WHEN rtresult=5 THEN;DO;IF MiamiDef='' THEN;DO;Call GUIControl();Call MiamiConfig();End;ELSE Config="Miami:Miami.default";End;WHEN rtresult=6 THEN;DO;Call GUIControl();Call MiamiConfig();End;End;End;End;End;IF Config=""|~Exists(Config)&Load~=1 THEN;DO;IF Exists('Miami:Miami.default') THEN Config='Miami:Miami.default';End;IF Config=""|~Exists(Config) THEN;DO;IF Exists('Miami:Miami.default') THEN;DO;MiamiDef='_Miami.default|';DefResp=2;End;ELSE;DO;MiamiDef='';DefResp=1;End;Call rtezrequest('Miami has no settings file to load'||NL||'What do you wish to do now?','_Choose Settings|'MiamiDef'Con_trol|_Cancel',Title Version 'Choose Miami Settings Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=1 THEN Call ChooseConfig();WHEN rtresult=2 THEN;DO;IF DefResp=2 THEN Config='Miami:Miami.default';ELSE;DO;Call GUIControl();Call MiamiConfig();End;End;WHEN rtresult=3 THEN;DO;Call GUIControl();Call MiamiConfig();End;End;End;IF Config~=Temp&Show('P','MIAMI.1') THEN ADDRESS MIAMI.1 'LOADSETTINGS' Config;Return();ChooseConfig:;Config=rtfilerequest('Miami:',,'Choose Miami Settings...','_Use' pubs);IF rtresult=0 THEN Call Depart();Return();MiamiLoad:;IF MiamiExe='MIAMIEXE' THEN MiamiExe="Miami:Miami";IF ~Exists(MiamiExe) THEN;DO;Call rtezrequest(MiamiExe' was not found!'||NL||'Miami v3+ requires Miami executable & path to be called:'||NL||' Miami:Miami or MiamiDx.beta, but in your case is not'||NL||'Find and select the Miami executable?','_Find Miami|Con_trol|_Cancel',Title Version 'Miami Not Found Menu','rtez_defaultresponse=1' pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=2 THEN;DO;Call GUIControl();Call MiamiLoad();End;WHEN rtresult=1 THEN;DO;MiamiExe=rtfilerequest('Miami:','Miami.020','Select Miami Executable...','_Execute' pubs);IF rtresult=0 THEN Call Depart();End;End;End;ADDRESS COMMAND 'Run >NIL:' MiamiExe Config;Call MiamiChecking();IF DialGUI=1|DialGUI=2 THEN ADDRESS MIAMI.1 'SHOW';Return();OnlineReq:;Call StatusCheck();SELECT;WHEN m=2 THEN DefResp=3+LargeGUI;OTHERWISE DefResp=2;End;SS=0;NoStartup=0;NoShutdown=0;STRTSDWN=1;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Do you wish to:'||NL||'Load Miami & Go Online, Go Online,'||NL||'Go Online & Startup Programs,'||NL||'Startup/Shutdown Programs,'||NL||'or alter the Miami/MSS GUI status?';IF LargeGUI=1 THEN Buttons='_Load|_Online|Online & _Startup|_Startup/Shutdown|Con_trol|O_k';ELSE Buttons='_Load|_Online|_Startup/Shutdown|Con_trol|O_k';Call rtezrequest(Menu,Buttons,Title Version 'Online Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=1 THEN;DO;Config='CONFIG';Load='1';Call StatusCheck();IF m=2 THEN;DO;Call ResultCheck();Call OfflineReq();End;ELSE;DO;Lock=0;UnLock=0;KillGUI=0;Details=0;Online=0;Offline=0;Quit=0;ForceQuit=0;Call Start();End;End;WHEN rtresult=2&LargeGUI=0 THEN;DO;Call rtezrequest('Do you want to go Online or'||NL||'Online & Startup Programs?','_Online|Online & _Startup|Con_trol|Go _Back',Title Version 'Online Type Requestor','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN;DO;Call StatusCheck();IF m=2 THEN;DO;Call ResultCheck();Call OfflineReq();End;ELSE Call Online();End;WHEN rtresult=2 THEN;DO;Call StatusCheck();IF m=0|m=2 THEN;DO;Call ResultCheck();Call OfflineReq();End;ELSE;DO;Call Online();Call Startup();End;End;WHEN rtresult=3 THEN;DO;Call GUIControl();Call OnlineReq();End;OTHERWISE Call OnlineReq();End;End;WHEN rtresult=2&LargeGUI=1 THEN;DO;Call StatusCheck();IF m=2 THEN;DO;Call ResultCheck();Call OfflineReq();End;ELSE Call Online();End;WHEN rtresult=3&LargeGUI=1 THEN;DO;Call StatusCheck();IF m=0|m=2 THEN;DO;Call ResultCheck();Call OfflineReq();End;ELSE;DO;Call Online();Call Startup();End;End;WHEN rtresult=3+LargeGUI THEN;DO;Call SS();Call OnlineReq();End;WHEN rtresult=4+LargeGUI THEN;DO;Call GUIControl();Call OnlineReq();End;End;Return();Online:;IF DialGUI=1|DialGUI=2 THEN;DO;ADDRESS MIAMI.1;'SHOW';'ONLINE';Call CheckOnline();End;ELSE ADDRESS MIAMI.1 'ONLINE';Return();OfflineReq:;SS=0;NoStartup=0;NoShutdown=0;STRTSDWN=1;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Do you wish to:'||NL||'Go Offline, Quit Miami, Force Quit Miami,'||NL||'Startup/Shutdown Programs, Show Online Details,'||NL||'or alter the Miami/MSS GUI status?';IF LargeGUI=1 THEN Buttons='_Offline|_Quit|_Force Quit|_Startup/Shutdown|_Details|Con_trol|O_k';ELSE Buttons='_Offline|_Quit|_Startup/Shutdown|_Details|Con_trol|O_k';Call rtezrequest(Menu,Buttons,Title Version 'Offline Menu','rtez_defaultresponse='4+LargeGUI pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN rtresult=1 THEN;DO;Call StatusCheck();IF m<2 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE Call DisQuit(1);End;WHEN rtresult=2&LargeGUI=0 THEN;DO;Call rtezrequest('Do you want to Quit or Force Quit Miami?','_Quit|_Force Quit|Con_trol|Go _Back',Title Version 'Quit Type Requestor','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN;DO;Call StatusCheck();IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE Call DisQuit(2);End;WHEN rtresult=2 THEN;DO;Call StatusCheck();IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE Call DisQuit(3);End;WHEN rtresult=3 THEN;DO;Call GUIControl();Call OfflineReq();End;OTHERWISE Call OfflineReq();End;End;WHEN rtresult=2&LargeGUI=1 THEN;DO;Call StatusCheck();IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE Call DisQuit(2);End;WHEN rtresult=3&LargeGUI=1 THEN;DO;Call StatusCheck();IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE Call DisQuit(3);End;WHEN rtresult=3+LargeGUI THEN;DO;Call SS();Call OfflineReq();End;WHEN rtresult=4+LargeGUI THEN;DO;Call OnlineDetails();Call OfflineReq();End;WHEN rtresult=5+LargeGUI THEN;DO;Call GUIControl();Call OfflineReq();End;End;Return();SS:;Call StatusCheck();IF m=2 THEN DefResp=1;ELSE DefResp=2;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Do you wish to start the:'||NL||'Startup programs or'||NL||'Shutdown programs?';Call rtezrequest(Menu,'_Startup|S_hutdown|Con_trol|Go _Back',Title Version 'Startup/Shutdown Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=1 THEN;DO;Call StatusCheck();IF m~=2 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE;DO;Call Startup();Call SS();End;End;WHEN rtresult=2 THEN;DO;Call Shutdown();Call SS();End;WHEN rtresult=3 THEN;DO;Call GUIControl();Call SS();End;OTHERWISE NOP;End;Return();FullGUI:;SS=0;NoStartup=0;NoShutdown=0;STRTSDWN=1;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Do you wish to go to the:'||NL||'Online Menu, the Offline Menu,'||NL||'Show Online Details,'||NL||'Alter the Miami/MSS GUI status or'||NL||'Depart Miami Start/Stop?';Call rtezrequest(Menu,'_Online|O_ffline|_Details|Con_trol|De_part',Title Version 'Full Menu','rtez_defaultresponse=3' pubs);SELECT;WHEN rtresult=0 THEN Exit;WHEN rtresult=1 THEN;DO;Call OnlineReq();Call Depart();End;WHEN rtresult=2 THEN;DO;Call OfflineReq();Call Depart();End;WHEN rtresult=3 THEN;DO;Call OnlineDetails();Call Depart();End;WHEN rtresult=4 THEN;DO;Call GUIControl();Call Depart();End;End;Return();Startup:;Call CheckOnline();IF NoStartup=0 THEN;DO;IF STRTSDWN=0 THEN;DO;IF Exists('ENV:MSS_Startup') THEN Startup='ENV:MSS_Startup';ELSE IF Exists('ENVARC:MSS_Startup') THEN Startup='ENVARC:MSS_Startup';End;IF Startup='STRT'|Startup='STARTUP'|~Exists(Startup) THEN;DO;IF Startup='STRT'|Startup='STARTUP'|Exists(Startup) THEN Menu='Please choose a startup file to load your programs';ELSE;DO;Menu=Insert(" file doesn't exist",Startup,Length(Startup));End;IF Exists('ENV:MSS_Startup') THEN;DO;MSSSTRT='|_ENV:MSS_Startup';DefResp=2;End;ELSE;DO;IF Exists('ENVARC:MSS_Startup') THEN;DO;MSSSTRT='|_ENVARC:MSS_Startup';DefResp=2;End;ELSE;DO;MSSSTRT='';DefResp=1;End;End;IF GoStart=1 THEN Back='_Cancel';ELSE Back='Go _Back';GoStart=0;Call rtezrequest(Menu||NL||'Find and select the Startup file?','_Find Startup'MSSSTRT'|Con_trol|'Back,Title Version 'Startup Not Found Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=0 THEN Startup='STRT';WHEN rtresult=1 THEN;DO;IF Startup='STRT'|Startup='STARTUP'|~Exists(Startup) THEN;DO;Startup=rtfilerequest('ENV:','MSS_Startup','Select Startup File...','_Run',pubs);IF rtresult=0 THEN Startup='STRT';End;End;WHEN rtresult=2&Left(MSSSTRT,2)='|_' THEN Startup=SubStr(MSSSTRT,3);WHEN rtresult=2&MSSSTRT='' THEN;DO;Startup='STRT';Call GUIControl();Call Startup();End;WHEN rtresult=3 THEN;DO;Startup='STRT';Call GUIControl();Call Startup();End;OTHERWISE NOP;End;End;IF Startup~=''&Startup~='STRT' THEN;DO;PRAGMA('S',35000);CheckOpen=Open(MSS,Startup,'R');IF CheckOpen=0 THEN;DO;Call rtezrequest('Unable to open "'Startup'"'||NL||'make sure the file exists, Check protection bits, etc','O_k|_Select File',Title Version Startup 'Requestor',pubs);Call Close(MSS);IF rtresult=0 THEN;DO;Startup='STRT';Call Startup();End;Call Depart();End;DO UNTIL EOF(MSS);Call FileWork();End;Call Close(MSS);Call Depart();End;End;Return();Shutdown:;IF NoShutdown=0 THEN;DO;IF STRTSDWN=0 THEN;DO;IF Exists('ENV:MSS_Shutdown') THEN Startup='ENV:MSS_Shutdown';ELSE IF Exists('ENVARC:MSS_Shutdown') THEN Startup='ENVARC:MSS_Shutdown';End;IF Shutdown='SDWN'|Shutdown='SHUTDOWN'|~Exists(Shutdown) THEN;DO;IF Exists('ENV:MSS_Shutdown') THEN;DO;MSSSDWN='|_ENV:MSS_Shutdown';DefResp=2;End;ELSE;DO;IF Exists('ENVARC:MSS_Shutdown') THEN;DO;MSSSDWN='|_ENVARC:MSS_Shutdown';DefResp=2;End;ELSE;DO;MSSSDWN='';DefResp=1;Shutdown='SDWN';End;End;IF Shutdown='SDWN'|Shutdown='SHUTDOWN' THEN Menu='Please choose a shutdown file to use';ELSE;DO;Menu=Insert(" file doesn't exist",Menu,Length(Menu));End;IF GoShut=1 THEN Back='_Cancel';ELSE Back='Go _Back';GoShut=0;Call rtezrequest(Menu||NL||'Find and select the Shutdown file?','_Find Shutdown'MSSSDWN'|Con_trol|'Back,Title Version 'Shutdown Not Found Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=0 THEN Shutdown='SDWN';WHEN rtresult=1 THEN;DO;IF Shutdown='SDWN'|Shutdown='SHUTDOWN'|~Exists(Shutdown) THEN;DO;Shutdown=rtfilerequest('ENV:','MSS_Shutdown','Select Shutdown File...','_Run',pubs);IF rtresult=0 THEN Shutdown='SDWN';End;End;WHEN rtresult=2&Left(MSSSDWN,2)='|_' THEN Shutdown=SubStr(MSSSDWN,3);WHEN rtresult=2&MSSSDWN='' THEN;DO;Shutdown='SDWN';Call GUIControl();Call Shutdown();End;WHEN rtresult=3 THEN;DO;Shutdown='SDWN';Call GUIControl();Call Shutdown();End;OTHERWISE NOP;End;End;IF Shutdown~=''&Shutdown~='SDWN' THEN;DO;PRAGMA('S',35000);CheckOpen=Open(MSS,Shutdown,'R');IF CheckOpen=0 THEN;DO;Call rtezrequest('Unable to open "'Shutdown'"'||NL||'make sure the file exists, Check protection bits, etc','O_k|_Select File',Title Version Shutdown 'Requestor',pubs);Call Close(MSS);IF rtresult=0 THEN;DO;Shutdown='SDWN';Call Shutdown();End;Call Depart();End;DO UNTIL EOF(MSS);Call FileWork();End;Call Close(MSS);IF SS~=69 THEN Call Depart();End;End;IF SS=69&Shutdown='SDWN' THEN Call OfflineReq();Return();UnfoundProgram:;Call rtezrequest(''ARG(1)' was not loaded!'||NL||'Make sure it is typed in properly in 'Startup,'Con_trol|O_k',Title Version Startup 'Requestor','rtez_defaultresponse=0' pubs);IF rtresult THEN Call GUIControl();Return();FileWork:;DataRead=ReadLn(MSS);SELECT;WHEN Left(Upper(DataRead),6)='AREXX ' THEN;DO;Parse Var DataRead AREXX Port Command;Call AREXX();End;WHEN Left(Upper(DataRead),3)='IF ' THEN;DO;Parse Var DataRead IF Port YesNo Program Arguements;IF Upper(YesNo)='EXISTS' THEN YesNo='1';ELSE YesNo='0';SELECT;WHEN Show('P',Port)=YesNo&Left(Compress(Upper(Program)),5)='AREXX' THEN;DO;Parse Var Arguements Port Command;Call AREXX();End;WHEN Show('P',Port)=YesNo&Compress(Program)~='' THEN Call Execute();OTHERWISE NOP;End;End;WHEN Left(Compress(DataRead),1)=';' THEN NOP;OTHERWISE;IF Compress(DataRead)~='' THEN;DO;Parse Var DataRead Program Arguements;Call Execute();End;End;Return();AREXX:;Command=Compress(Command);IF Show('P',Port) THEN INTERPRET ADDRESS Port Command;ELSE;DO;IF Right(Port,2)='.x' THEN;DO;Parse Var Port Multiple'.'Blah;Length=Length(Multiple);Ports=Show('P');DO UNTIL Ports='';Parse Var Ports Check Ports;IF Pos(Multiple,Check)~=0 THEN INTERPRET ADDRESS Check Command;End;End;End;Return();Execute:;Dir=LEFT(Program,LASTPOS('/',Program));IF Dir="" THEN Dir=LEFT(Program,LASTPOS(':',Program));IF Exists(Dir) THEN;DO;PRAGMA('D',Dir);IF Exists(Program) THEN;DO;ADDRESS COMMAND 'Run >NIL:' Program Arguements;Call Delay(Time*f);End;ELSE UnfoundProgram(Program);End;ELSE UnfoundProgram(Dir);Return();CheckOnline:;j=0;Call Delay(1*f);DO UNTIL j>(Wait%2);IF Show('P','MIAMI.1') THEN;DO;Call StatusCheck();IF m=2 THEN Leave;Call Delay(2*f);End;ELSE;DO;Call MiamiChecking();End;j=j+1;End;IF m~=2 THEN Call NotOnline();ELSE;DO;IF DialGUI=1|DialGUI=2 THEN;DO;ADDRESS MIAMI.1 'INFO VERSION';Parse Var Result Word1' 'Word2' 'MVer' 'Rest;IF Word2='Miami' THEN;DO;IF Left(MVer,1)>3|(SubStr(MVer,1,1)>2&SubStr(MVer,3,1)>1) THEN NOP;ELSE;DO;IF Dialing0="'KILLGUI'" THEN Dialing0="'HIDE'";End;End;INTERPRET ADDRESS MIAMI.1 Dialing0;End;End;Return();NotOnline:;IF m~=2 THEN;DO;IF NoStartup=0&Exists(Startup) THEN;DO;Loader='_Load Programs|';i=1;DefResp=2;End;ELSE;DO;Loader='';i=0;DefResp=1;End;Call rtezrequest('Miami is not online yet, what do you wish to do?',''Loader'_Wait More|_Online|Con_trol|_Cancel',Title Version 'Not Online Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=0 THEN Call Depart();WHEN i=1&rtresult=1 THEN m=2;OTHERWISE;SELECT;WHEN rtresult=1+i THEN;DO;Call Startup();Call Depart();End;WHEN rtresult=2+i THEN;DO;ADDRESS MIAMI.1 'ONLINE';Call CheckOnline();Call NotOnline();End;WHEN rtresult=3+i THEN;DO;Call GUIControl();Call NotOnline();End;End;End;End;Return();OnlineDetails:;IF Show('P','MIAMI.1') THEN;DO;ADDRESS MIAMI.1 'INFO VERSION';result='aaa';ADDRESS MIAMI.1 'GETCONNECT';Speed=result;End;ELSE Speed=0;Call OnlineTime();Call OnlineOutput();Return();OnlineTime:;File=MiamiLog;Con=a;IF Exists(File)&File~=''&File~='MIAMILOG'&File~='FILE' THEN;DO;Call FileOpen();Con=0;PasOff=0;ActOff=0;ReCon=0;CReCon=0;TTime=0;Min=99999999;Max=0;Cost0=0;DataRead.2='';Prior='';TPCost=0;MonthC=0;PMonthC=0;Temp=0;Speed.0=0;ConSpeed.0=0;Monday=0;Tuesday=0;Wednesday=0;Thursday=0;Friday=0;Saturday=0;Sunday=0;l=1;SELECT;WHEN Sync=1 THEN;DO;FullLog='';DO UNTIL EOF(MSS);FullLog.l=ReadLn(MSS);l=l+1;End;End;WHEN Sync=2 THEN;DO;FullLog='';DO UNTIL EOF(MSS);FullLog.l=ReadCh(MSS,1024);l=l+1;End;End;OTHERWISE FullLog.l='Empty';End;l=1;DO UNTIL FullLog.l='';SELECT;WHEN Sync=1 THEN;DO;DataRead.1=FullLog.l;l=l+1;End;WHEN Sync=2 THEN;DO;Parse Var FullLog.l DataRead.1 '0A'x FullLog.l;IF FullLog.l='' THEN;DO;m=l+1;IF FullLog.m~='' THEN;DO;Lefto=Left(DataRead.1,1);IF Lefto='O'|Lefto='A'|Lefto='P'|Lefto='R'|Lefto='0A'x THEN;DO;Leftoo=Left(FullLog.m,1);SELECT;WHEN Leftoo='O'|Leftoo='A'|Leftoo='P'|Leftoo='R'|Leftoo='0A'x THEN l=l+1;OTHERWISE;l=l+1;Parse Var FullLog.l Rest '0A'x FullLog.l;DataRead.1=DataRead.1||Rest;End;End;ELSE l=l+1;End;End;End;OTHERWISE;DataRead.1=ReadLn(MSS);End;IF EOF(MSS)&FullLog.l='Empty' THEN FullLog.l='';SELECT;WHEN Pos('Online',DataRead.1)=1 THEN;DO;DataRead.2=DataRead.1;CReCon=0;Con=Con+1;IF Pos('Online(',DataRead.1)=1 THEN Parse Var DataRead.1 Rest9': 'Day.1'.'Month.1'.'Year.1':'Rest'('Phone') ('Speed.1')'Rest1;ELSE Parse Var DataRead.1 Rest9': 'Day.1'.'Month.1'.'Year.1' 'Rest'('Phone') ('Speed.1')'Rest1;IF DATATYPE(Day.1,'W')&DATATYPE(Month.1,'W')&DATATYPE(Year.1,'W') THEN;DO;WkDy=Date('W',Year.1||Month.1||Day.1,'S');SELECT;WHEN WkDy='Monday' THEN Monday=Monday+1;WHEN WkDy='Tuesday' THEN Tuesday=Tuesday+1;WHEN WkDy='Wednesday' THEN Wednesday=Wednesday+1;WHEN WkDy='Thursday' THEN Thursday=Thursday+1;WHEN WkDy='Friday' THEN Friday=Friday+1;WHEN WkDy='Saturday' THEN Saturday=Saturday+1;WHEN WkDy='Sunday' THEN Sunday=Sunday+1;OTHERWISE Call Error();End;End;IF DATATYPE(SubStr(DataRead.1,9,2),'W')&~DATATYPE(SDay,'W') THEN;DO;IF Pos('Online(',DataRead.1)=1 THEN Parse Var DataRead.1 Rest9': 'SDay'.'SMonth'.'SYear':'Rest;ELSE Parse Var DataRead.1 Rest9': 'SDay'.'SMonth'.'SYear' 'Rest;End;IF DOPCost=1&TCalls=0 THEN;DO;TPCost=MinCharge+TPCost;IF DATATYPE(Speed.1,'W') THEN;DO;Speed.0=Speed.0+Speed.1;ConSpeed.0=ConSpeed.0+1;End;IF NumMonth>0 THEN;DO;IF NumMonth=1 THEN;DO;IF ~DATATYPE(CurrMonth,'W')|~DATATYPE(CurrYear,'W') THEN;DO;CurrMonth=SMonth;CurrYear=SYear;End;IF Month.1>CurrMonth&Day.1>=StartDay THEN;DO;CurrMonth=Month.1;PMonthC=MonthC;MonthC=0;End;IF Year.1>CurrYear&Month.1<CurrMonth&Day.1>=StartDay THEN;DO;CurrMonth=Month.1;PMonthC=MonthC;MonthC=0;End;MonthC=MonthC+MinCharge;End;ELSE;DO;IF ~DATATYPE(CurrMonth,'W')|~DATATYPE(CurrYear,'W') THEN;DO;CurrMonth=StartMonth;CurrYear=StartYear;End;DO FOREVER;IF Length(CurrMonth)=1 THEN CurrMonth='0'||CurrMonth;IF Length(StartDay)=1 THEN StartDay='0'||StartDay;IF CurrYear||CurrMonth||StartDay>Year.1||Month.1||Day.1 THEN;DO;DO FOREVER;CheckYear=CurrYear;CheckMonth=CurrMonth-NumMonth;IF CheckMonth<1 THEN;DO;CheckMonth=CheckMonth+12;CheckYear=CheckYear-1;End;IF Length(CheckMonth)=1 THEN CheckMonth='0'||CheckMonth;IF CheckYear||CheckMonth||StartDay>Year.1||Month.1||Day.1 THEN;DO;CurrYear=CheckYear;CurrMonth=CheckMonth;End;ELSE Leave;End;Leave;End;ELSE;DO;CurrMonth=CurrMonth+NumMonth;PMonthC=MonthC;MonthC=0;IF CurrMonth>12 THEN;DO;CurrMonth=CurrMonth-12;CurrYear=CurrYear+1;End;End;End;MonthC=MonthC+MinCharge;End;End;End;End;WHEN Pos('Active Offline',DataRead.1)=1|Pos('Passive Offline',DataRead.1)=1 THEN;DO;IF DataRead.2~='' THEN;DO;LogRead=DataRead.2;IF Pos('Online(',LogRead)=1 THEN Parse Var LogRead Rest9': 'Day.1'.'Month.1'.'Year.1':'Hours.1':'Mins.1':'Secs.1 Rest;ELSE Parse Var LogRead Rest9': 'Day.1'.'Month.1'.'Year.1' 'Hours.1':'Mins.1':'Secs.1 Rest;IF ~DATATYPE(Day.1,'W') THEN;DO;Con=a;Call MiamiDetails();Call OnlineOutput();Call Depart();End;IF ~DATATYPE(Secs.1,'W') THEN;DO;Con=a;Call MiamiDetails();Call OnlineOutput();Call Depart();End;LogDayEpoch=Date('I',Year.1||Month.1||Day.1,'S');LogEpoch=LogDayEpoch*86400+(Hours.1*3600)+(Mins.1*60)+Secs.1;IF Pos('Active Offline(',DataRead.1)=1|Pos('Passive Offline(',DataRead.1)=1 THEN Parse Var DataRead.1 Word1' 'Word2' 'Day.0'.'Month.0'.'Year.0':'Hours.0':'Mins.0':'Secs.0 Rest;ELSE Parse Var DataRead.1 Word1' 'Word2' 'Day.0'.'Month.0'.'Year.0' 'Hours.0':'Mins.0':'Secs.0 Rest;IF ~DATATYPE(Day.0,'W') THEN;DO;Con=a;Call MiamiDetails();Call OnlineOutput();Call Depart();End;IF ~DATATYPE(Secs.0,'W') THEN;DO;Con=a;Call MiamiDetails();Call OnlineOutput();Call Depart();End;LogDayEpoch=Date('I',Year.0||Month.0||Day.0,'S');DisLogEpoch=LogDayEpoch*86400+(Hours.0*3600)+(Mins.0*60)+Secs.0;Prior=DisLogEpoch-LogEpoch;TTime=Prior+TTime;IF Prior>Max|Prior<Min THEN;DO;IF Prior>Max THEN;DO;Max=Prior;Type='Max';End;IF Prior<Min THEN;DO;Min=Prior;Type='Min';End;IF Day.1||Month.1||Year.1~=Day.0||Month.0||Year.0 THEN;DO;a=2;b=2;End;ELSE;DO;a=1;b=1;End;Year.2=Year.1;Month.2=Month.1;Day.2=Day.1;DO UNTIL a=0;IF b=2&a=1 THEN;DO;Year.2=Year.0;Month.2=Month.0;Day.2=Day.0;End;IF ALPHDY=0 THEN ATime='';ELSE;DO;SELECT;WHEN ALPHDY=1 THEN ALPHDY.0='';WHEN ALPHDY=3 THEN ALPHDY.0=Date('W',Year.2||Month.2||Day.2,'S')' ';OTHERWISE ALPHDY.0=Left(Date('W',Year.2||Month.2||Day.2,'S'),3)'. ';End;IF DY=0 THEN DY.0='';ELSE DY.0=Left(Date('N',Year.2||Month.2||Day.2,'S'),2);SELECT;WHEN MNTH=0 THEN MNTH.0='';WHEN MNTH=1 THEN MNTH.0=Left(Date('U',Year.2||Month.2||Day.2,'S'),2);OTHERWISE MNTH.0=SubStr(Date('N',Year.2||Month.2||Day.2,'S'),4,3);End;SELECT;WHEN YR=0 THEN YR.0='';WHEN YR=2 THEN YR.0=Left(Date('J',Year.2||Month.2||Day.2,'S'),2);OTHERWISE YR.0=Left(Date('S',Year.2||Month.2||Day.2,'S'),4);End;i=0;ATime='';Prior.0=0;Prior.1=0;ORDS=ORDER;DO UNTIL i=5;Parse Var ORDS Ord ORDS;IF Prior.0>1&Prior.1>0&Ord~=5 THEN;DO;IF (Ord=2&DY~=0)|(Ord=3&MNTH~=0)|(Ord=4&YR~=0) THEN ATime=ATime||Sep;End;IF Prior.0>1&(Ord=1|Ord=5) THEN ATime=ATime||' ';SELECT;WHEN Ord=1 THEN ATime=ATime||ALPHDY.0;WHEN Ord=2 THEN ATime=ATime||DY.0;WHEN Ord=3 THEN ATime=ATime||MNTH.0;WHEN Ord=4 THEN ATime=ATime||YR.0;OTHERWISE NOP;End;i=i+1;Prior.0=Ord;SELECT;WHEN Prior.0=2 THEN;DO;IF DY>0 THEN Prior.1=1;End;WHEN Prior.0=3 THEN;DO;IF MNTH>0 THEN Prior.1=1;End;WHEN Prior.0=4 THEN;DO;IF YR>0 THEN Prior.1=1;End;OTHERWISE Prior.1=0;End;End;End;SELECT;WHEN a=2&b=2 THEN MDate=' on 'ATime'to ';WHEN a=1&b=2 THEN MDate=MDate||ATime;WHEN a=1&b=1 THEN MDate=' on 'ATime;OTHERWISE Call Error();End;IF Type='Min' THEN MinDate=MDate;ELSE MaxDate=MDate;a=a-1;End;a=0;b=0;End;IF Prior%60>Begin THEN Cost0=((Prior+60)%60)+Cost0;IF DOPCost=1&TCalls=1 THEN;DO;CurrDay=Left(Date('W',Year.1||Month.1||Day.1,'S'),1);DiffDays=Date('I',Year.0||Month.0||Day.0,'S')-Date('I',Year.1||Month.1||Day.1,'S');Hours=Hours.0;Mins=Mins.0;IF CurrDay="S"&DiffDays=0 THEN PCost=((Hours*60)+Mins)-((Hours.1*60)+Mins.1)*WeekEndRate;ELSE;DO;SELECT;WHEN Hours.1<PeakStart&DiffDays=0 THEN;DO;IF Hours>=PeakStart THEN;DO;PCost=((PeakStart*60)-((Hours.1*60)+Mins.1))*EveningRate;IF Hours>=ArvoStart THEN;DO;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;IF Hours>=ArvoEnd THEN;DO;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(ArvoStart*60))*ArvoRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(PeakStart*60))*PeakRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*EveningRate;End;WHEN Hours.1<ArvoStart&Hours.1>=PeakStart&DiffDays=0 THEN;DO;IF Hours>=ArvoStart THEN;DO;PCost=((ArvoStart*60)-(Hours.1*60)+Mins.1)*PeakRate;IF Hours>=ArvoEnd THEN;DO;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(ArvoStart*60))*ArvoRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*PeakRate;End;WHEN Hours.1<ArvoEnd&Hours.1>=ArvoStart&DiffDays=0 THEN;DO;IF Hours>=ArvoEnd THEN;DO;PCost=((ArvoEnd*60)-((Hours.1*60)+Mins.1))*ArvoRate;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*ArvoRate;End;WHEN Hours.1>=ArvoEnd&DiffDays=0 THEN PCost=(((Hours*60)+Mins)-((Hours.1*60)+Mins.1))*EveningRate;WHEN DiffDays>0 THEN;DO;WDay=(Date('I',Year.1||Month.1||Day.1,'S'))+1;IF DiffDays>1 THEN;DO UNTIL DiffDays=1;CurrDay=Left(Date('W',WDay),1);IF CurrDay='S' THEN PCost=1440*WeekEndRate;ELSE;DO;PCost=(((PeakStart*60)-0)*EveningRate)+PCost;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;DiffDays=DiffDays-1;WDay=WDay+1;End;IF Left(Date('W',Date('I',Year.1||Month.1||Day.1,'S')),1)='S' THEN PCost=1440-((Hours.1*60)+Mins.1)*WeekEndRate;ELSE;DO;SELECT;WHEN Hours.1<PeakStart THEN;DO;PCost=(((PeakStart*60)-((Hours.1*60)+Mins.1))*EveningRate)+PCost;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;WHEN Hours.1<ArvoStart&Hours.1>=PeakStart THEN;DO;PCost=(((ArvoStart*60)-((Hours.1*60)+Mins.1))*PeakRate)+PCost;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;WHEN Hours.1<ArvoEnd&Hours.1>=ArvoStart THEN;DO;PCost=((((ArvoEnd*60)-((Hours.1*60)+Mins.1))*ArvoRate)+PCost;PCost=((1440-(ArvoEnd*60))*EveningRate)+PCost;End;WHEN Hours.1>=ArvoEnd THEN PCost=((1440-(Hours.1*60))*EveningRate)+PCost;End;End;Hours.1='00';Mins.1='00';IF Left(Date('W',Date('I',Year.0||Month.0||Day.0,'S')),1)='S' THEN PCost=(((Hours*60)+Mins)*WeekEndRate)+PCost;ELSE;DO;IF Hours>=PeakStart THEN;DO;PCost=((PeakStart*60)*EveningRate)+PCost;IF Hours>=ArvoStart THEN;DO;PCost=(((ArvoStart*60)-(PeakStart*60))*PeakRate)+PCost;IF Hours>=ArvoEnd THEN;DO;PCost=(((ArvoEnd*60)-(ArvoStart*60))*ArvoRate)+PCost;PCost=((((Hours*60)+Mins)-(ArvoEnd*60))*EveningRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(ArvoStart*60))*ArvoRate)+PCost;End;ELSE PCost=((((Hours*60)+Mins)-(PeakStart*60))*PeakRate)+PCost;End;ELSE PCost=(((Hours*60)+Mins)*EveningRate)+PCost;End;End;OTHERWISE Call Error();End;End;IF PCost<MinCharge THEN PCost=MinCharge;IF NumMonth~=0 THEN;DO;IF NumMonth>0 THEN;DO;IF Pos('Online(',DataRead.1)=1 THEN Parse Var DataRead.1 Rest9': 'Day.1'.'Month.1'.'Year.1':'Rest;ELSE Parse Var DataRead.1 Rest9': 'Day.1'.'Month.1'.'Year.1 Rest;IF NumMonth=1 THEN;DO;IF ~DATATYPE(CurrMonth,'W')|~DATATYPE(CurrYear,'W') THEN;DO;CurrMonth=SMonth;CurrYear=SYear;End;IF Month.1>CurrMonth&Day.1>=StartDay THEN;DO;CurrMonth=Month.1;PMonthC=MonthC+Temp;MonthC=PCost-Temp;End;IF Year.1>CurrYear&Month.1<CurrMonth&Day.1>=StartDay THEN;DO;CurrMonth=Month.1;PMonthC=MonthC+Temp;MonthC=PCost-Temp;End;MonthC=MonthC+(PCost-Temp);Temp=0;End;ELSE;DO;IF ~DATATYPE(CurrMonth,'W')|~DATATYPE(CurrYear,'W') THEN;DO;CurrMonth=StartMonth;CurrYear=StartYear;End;DO FOREVER;IF Length(CurrMonth)=1 THEN CurrMonth='0'||CurrMonth;IF Length(StartDay)=1 THEN StartDay='0'||StartDay;IF CurrYear||CurrMonth||StartDay>Year.1||Month.1||Day.1 THEN;DO;DO FOREVER;CheckYear=CurrYear;CheckMonth=CurrMonth-NumMonth;IF CheckMonth<1 THEN;DO;CheckMonth=CheckMonth+12;CheckYear=CheckYear-1;End;IF Length(CheckMonth)=1 THEN CheckMonth='0'||CheckMonth;IF CheckYear||CheckMonth||StartDay>Year.1||Month.1||Day.1 THEN;DO;CurrYear=CheckYear;CurrMonth=CheckMonth;End;ELSE Leave;End;Leave;End;ELSE;DO;CurrMonth=CurrMonth+NumMonth;PMonthC=MonthC+Temp;MonthC=0;Temp=0;IF CurrMonth>12 THEN;DO;CurrMonth=CurrMonth-12;CurrYear=CurrYear+1;End;End;End;MonthC=MonthC+(PCost-Temp);Temp=0;End;End;End;PriorC=PCost;TPCost=PCost+TPCost;End;End;DataRead.2='';SELECT;WHEN Word1='Active' THEN ActOff=ActOff+1;WHEN Word1='Passive' THEN PasOff=PasOff+1;OTHERWISE NOP;End;End;WHEN Pos('Reconnect',DataRead.1)=1 THEN;DO;ReCon=ReCon+1;CReCon=CReCon+1;End;OTHERWISE NOP;END;End;IF Sync=0 THEN Call Close(MSS);IF Left(DataRead.1,6)='Online' THEN LogRead=DataRead.1;ELSE;DO;IF Left(DataRead.2,6)='Online' THEN LogRead=DataRead.2;ELSE;DO;LogDayEpoch=Date('I',Date('S'),'S');LogEpoch=LogDayEpoch*86400+Time('S');End;End;Call StatusCheck();IF m=2 THEN;DO;IF Pos('Online(',LogRead)=1 THEN Parse Var LogRead Rest9': 'Day.1'.'Month.1'.'Year.1':'Hours.1':'Mins.1':'Secs.1 Rest;ELSE Parse Var LogRead Rest9': 'Day.1'.'Month.1'.'Year.1' 'Hours.1':'Mins.1':'Secs.1 Rest;IF ~DATATYPE(Day.1,'W') THEN;DO;Con=a;Call MiamiDetails();Call OnlineOutput();Call Depart();End;IF ~DATATYPE(Secs.1,'W') THEN;DO;Con=a;Call MiamiDetails();Call OnlineOutput();Call Depart();End;LogDayEpoch=Date('I',Year.1||Month.1||Day.1,'S');LogEpoch=LogDayEpoch*86400+(Hours.1*3600)+(Mins.1*60)+Secs.1;End;ELSE;DO;Day.1='';Month.1='';Year.1='';Hours.1='';Mins.1='';Secs.1='';LogDayEpoch=Date('I',Date('S'),'S');LogEpoch=LogDayEpoch*86400+Time('S');End;IF CPCost=1&TCalls=1 THEN;DO;DiffDays=Date('I')-Date('I',Year.1||Month.1||Day.1,'S');CurrTime=Time('N');Parse Var CurrTime Hours':'Mins':'Rest;Call PhoneCosts();End;IF ~DATATYPE(Speed,'W') THEN;DO;IF Pos('Online(',DataRead.1)=1 THEN Parse Var LogRead '('Phone') ('Speed')' Rest;ELSE Parse Var LogRead '('Phone') ('Speed')' Rest;End;CurRead=Time('N');Parse Var CurRead Hours.2':'Mins.2':'Secs.2;CurDayEpoch=Date('I',Date('S'),'S');CurEpoch=CurDayEpoch*86400+Time('S');SLogDayEpoch=Date('I',SYear||SMonth||SDay,'S');IF DATATYPE(CurEpoch,W)&DATATYPE(LogEpoch,'W') THEN;DO;Timer=CurEpoch-LogEpoch;IF DATATYPE(Max,'W')&DATATYPE(Min,'W') THEN;DO;IF Timer>Max THEN;DO;Max=Timer;MaxDate=' with the current connection';End;IF Timer<Min&Timer~=0 THEN;DO;Min=Timer;MinDate=' with the current connection';End;End;Timer2='Connect';SDays=(CurDayEpoch-SLogDayEpoch)+1;End;End;ELSE Call MiamiDetails();Return();MiamiDetails:;ADDRESS MIAMI.1 'GETCONNECTTIME';Timer=result;Timer2='Connect';IF ~DATATYPE(Timer,'W') THEN;DO;IF Timer>900000000 THEN;DO;ADDRESS MIAMI.1 'GETONLINETIME';Timer=result;Timer2='Online';End;End;IF DATATYPE(Timer,'W') THEN;DO;Time0=Time('S');IF Time0<Timer THEN;DO;IF (Time0+86400)<Timer THEN;DO;DiffDays=(Timer-Time0)%86400;End;ELSE DiffDays=1;End;ELSE;DO;DiffDays=0;End;LogOff=Date('I',Date('S'),'S');Year.0=SubStr(Date('S'),1,4);Month.0=SubStr(Date('S'),5,2);Day.0=SubStr(Date('S'),7,2);Hours=Time('N');Mins=SubStr(Hours,4,2);Hours=SubStr(Hours,1,2);LogOn=Date('S',LogOff-DiffDays);Year.1=SubStr(LogOn,1,4);Month.1=SubStr(LogOn,5,2);Day.1=SubStr(LogOn,7,2);CurrDay=Left(Date('W',LogOff),1);IF Time0>Timer THEN;DO;Mins.1=(Time0-Timer)%60;Hours.1=Mins.1%60;Mins.1=Mins.1-(Hours.1*60);End;ELSE;DO;Mins.1=(86400-((Timer-(86400*(DiffDays-1)))-Time0))%60;Hours.1=Mins.1%60;Mins.1=Mins.1-(Hours.1*60);End;IF CPCost=1&TCalls=1 THEN Call PhoneCosts();End;Return();OnlineOutput:;IF DATATYPE(Timer,'W') THEN;DO;IF DATATYPE(Cost,'N')&Cost~=0 THEN;DO;IF Timer%60>Begin THEN Cost1=NL||'Current ISP cost:' Currency||Trunc(Cost*(((Timer%60)+1)-Begin),2);ELSE Cost1=NL||'Connect cost:' Currency'0.00';End;ELSE Cost1='';Timer0=Timer;IF DATATYPE(Prior,'W') THEN;DO;Timer=Prior;IF DATATYPE(Cost,'N')&Cost~=0 THEN;DO;IF Timer%60>Begin THEN Cost2=NL||'Prior ISP cost:' Currency||Trunc(Cost*(((Timer%60)+1)-Begin),2);ELSE Cost2=NL||'Prior connect cost:' Currency'0.00';End;ELSE Cost2='';Call Convertor();IF Prior>0 THEN Menu2=NL||'Prior connect time: 'Days||Hours||Mins||Timer;ELSE Menu2='';End;ELSE;DO;Menu2='';Cost2='';End;IF DATATYPE(PCost,'N') THEN Cost1=Cost1||NL||'Phone line cost: 'Currency||Trunc(PCost,2);IF DATATYPE(MonthC,'N')&MonthC~=0 THEN Cost1=Cost1||NL||'Current '||NumMonth||' month phone bill: '||Currency||Trunc((MonthC+PriCost),2);IF DATATYPE(PriorC,'N') THEN Cost2=Cost2||NL||'Prior connect phone line cost: 'Currency||Trunc(PriorC,2);IF DATATYPE(PMonthC,'N')&PMonthC~=0 THEN Cost2=Cost2||NL||'Prior '||NumMonth||' month phone bill: '||Currency||Trunc((PMonthC+PriCost),2);Timer=Timer0;IF Timer0=0 THEN Menu0='Miami is currently offline';ELSE;DO;Call Convertor();Menu0=Timer2||' time: '||Days||Hours||Mins||Timer;End;Call StatusCheck();IF m~=2 THEN ConSpeed='';ELSE;DO;IF DATATYPE(Speed,'W') THEN ConSpeed='Connect speed: 'Speed' bps'||NL;ELSE;DO;IF Compress(Speed)~='' THEN ConSpeed='Connect string: 'Speed||NL;ELSE ConSpeed='';End;End;IF m~=2|~DATATYPE(CReCon,'W') THEN Menu1='';ELSE Menu1=NL||'Reconnections: 'CReCon;IF DATATYPE(Con,'W') THEN;DO;ANLZR='|Log _Analyser';DefResp=2;End;ELSE;DO;ANLZR='';DefResp=0;End;IF ALPHDY=0 THEN ATime='';ELSE;DO;SELECT;WHEN ALPHDY=1 THEN ALPHDY.0='';WHEN ALPHDY=3 THEN ALPHDY.0=Date('W')' ';OTHERWISE ALPHDY.0=Left(Date('W'),3)'. ';End;IF DY=0 THEN DY.0='';ELSE DY.0=Left(Date('N'),2);SELECT;WHEN MNTH=0 THEN MNTH.0='';WHEN MNTH=1 THEN MNTH.0=Left(Date('U'),2);OTHERWISE MNTH.0=SubStr(Date('N'),4,3);End;SELECT;WHEN YR=0 THEN YR.0='';WHEN YR=2 THEN YR.0=Left(Date('J'),2);OTHERWISE YR.0=Left(Date('S'),4);End;SELECT;WHEN ZTime=0 THEN ZTime.0='';WHEN ZTime=2 THEN ZTime.0=Left(Time('N'),5)' ';WHEN ZTime=3 THEN ZTime.0=Overlay('.',Time('N'),6)' ';WHEN ZTime=4 THEN ZTime.0=Insert('.'||Right(Time('N'),2),Time('C'),Length(Time('C'))-2)' ';OTHERWISE ZTime.0=Time('C')' ';End;i=0;ATime='';Prior.0=0;Prior.1=0;ORDS=ORDER;DO UNTIL i=5;Parse Var ORDS Ord ORDS;IF Prior.0>1&Prior.1>0&Ord~=5 THEN;DO;IF (Ord=2&DY~=0)|(Ord=3&MNTH~=0)|(Ord=4&YR~=0) THEN ATime=ATime||Sep;End;IF Prior.0>1&(Ord=1|Ord=5) THEN ATime=ATime||' ';SELECT;WHEN Ord=1 THEN ATime=ATime||ALPHDY.0;WHEN Ord=2 THEN ATime=ATime||DY.0;WHEN Ord=3 THEN ATime=ATime||MNTH.0;WHEN Ord=4 THEN ATime=ATime||YR.0;WHEN Ord=5 THEN ATime=ATime||ZTime.0;OTHERWISE NOP;End;i=i+1;Prior.0=Ord;SELECT;WHEN Prior.0=2 THEN;DO;IF DY>0 THEN Prior.1=1;End;WHEN Prior.0=3 THEN;DO;IF MNTH>0 THEN Prior.1=1;End;WHEN Prior.0=4 THEN;DO;IF YR>0 THEN Prior.1=1;End;OTHERWISE Prior.1=0;End;End;ATime='Time: '||ATime||NL;End;IF Details THEN GoBack='';ELSE GoBack='|Go _Back';Call rtezrequest(ATime||'Your current connection:'||NL||ConSpeed||Menu0||Menu1||Cost1||Menu2||Cost2,'O_k'ANLZR'|Con_trol'GoBack,Title Version 'Online Details Menu','rtez_defaultresponse='DefResp pubs);SELECT;WHEN rtresult=1 THEN Call Depart();WHEN rtresult=2 THEN;DO;IF ANLZR='' THEN;DO;Call GUIControl();Call OnlineDetails();End;ELSE;DO;Call Analyser();Call OnlineDetails();End;End;WHEN rtresult=3 THEN;DO;Call GUIControl();Call OnlineDetails();End;OTHERWISE;IF Details THEN;DO;Call GUIControl();Call OnlineDetails();End;ELSE NOP;End;End;ELSE;DO;Call rtezrequest('A problem was experienced with your Miami!'||NL||NL||'Either your Miami has crashed or the Arexx port on it has a problem.'||NL||'Preferably, please use Miami v3.0d or higher.'||NL||NL||'Alternatively you can use the Miami Phone Log to'||NL||' overcome the limitations of early Miami versions.','O_k|Con_trol|Go _Back',Title Version 'Online Details Menu Error!','rtez_defaultresponse=0' pubs);IF rtresult THEN Call Depart();IF rtresult=2 THEN;DO;Call GUIControl();Call OnlineDetails();End;End;Cost1='';Menu3='';Return();Convertor:;Days1=0;Hours1=0;Mins1=0;Timer1=0;Skip1=0;Days=Timer%86400;Timer=Timer-(Days*86400);IF Days~=0 THEN;DO;IF Days>1 THEN Days=Days' days';ELSE Days=Days' day';End;ELSE Days='';Hours=Timer%3600;Timer=Timer-(Hours*3600);IF Hours~=0 THEN;DO;IF Hours>1 THEN Hours=Hours' hours';ELSE Hours=Hours' hour';End;ELSE Hours='';Mins=Timer%60;IF Mins~=0 THEN;DO;IF Mins>1 THEN Mins=Mins' mins';ELSE Mins=Mins' min';End;ELSE Mins='';Timer=Timer//60;IF Timer~=0 THEN;DO;IF Timer>1 THEN Timer=Timer' secs';ELSE Timer=Timer' sec';End;ELSE Timer='';IF Days~='' THEN Days1=1;IF Hours~='' THEN Hours1=1;IF Mins~='' THEN Mins1=1;IF Timer~='' THEN Timer1=1;IF Days1+Hours1+Mins1+Timer1>2 THEN;DO;IF Timer1=1 THEN;DO;Timer=' & 'Timer;IF Mins1=1 THEN Skip1=1;IF Hours1=1|Skip1=0 THEN;DO;Hours=Hours', ';Skip1=1;End;ELSE Skip1=1;IF Days1=1|Skip1=0 THEN Days=Days', ';End;ELSE;DO;IF Mins1=1 THEN;DO;Mins=' & 'Mins;IF Hours1=1 THEN Skip1=1;IF Days1=1|Skip1=0 THEN Days=Days', ';End;ELSE;DO;IF Hours1=1 THEN;DO;Hours=' & 'Hours;End;End;End;End;ELSE;DO;IF Days1+Hours1+Mins1+Timer1=2 THEN;DO;IF Timer1=1 THEN Timer=' & 'Timer;ELSE;DO;IF Mins1=1 THEN Mins=' & 'Mins;ELSE IF Hours1=1 THEN Hours=' & 'Hours;End;End;End;Return();FileOpen:;CheckOpen=Open(MSS,File,'R');IF CheckOpen=0 THEN;DO;Call rtezrequest('Unable to open "'File'"'||NL||'Make sure the file exists, Check protection bits, etc','Con_trol|O_k',Title Version File 'Requestor',pubs);Call Close(MSS);IF rtresult THEN;DO;Call GUIControl();Call OnlineDetails();End;IF rtresult=0 THEN Call Depart();End;Return();Analyser:;Menu='Log was started on 'SDay'/'SMonth'/'SYear||NL;IF SDays~=1 THEN Menu=Menu||'Log has been active for 'SDays' days'||NL;ELSE Menu=Menu||'Log has been active for 'SDays' day'||NL;IF Con~=1 THEN Menu=Menu||'There have been 'Con' connections'||NL;ELSE Menu=Menu||'There has been 'Con' connection'||NL;IF ReCon~=1 THEN Menu=Menu||'There were 'ReCon' reconnections'||NL;ELSE Menu=Menu||'There was 'ReCon' reconnection'||NL;IF PasOff~=1 THEN Menu=Menu||'There were 'PasOff' passive offlines';ELSE Menu=Menu||'There was 'PasOff' passive offline';IF Expert=1 THEN;DO;IF ActOff>1 THEN Menu=Menu||NL||'There were 'ActOff' active offlines';ELSE Menu=Menu||NL||'There was 'ActOff' active offline';End;ELSE;DO;IF ActOff~=1 THEN Menu=Menu||NL||'  [booted off/lost connection]'||NL||'There were 'ActOff' active offlines'||NL||'  [you disconnected]';ELSE Menu=Menu||NL||'  [booted off/lost connection]'||NL||'There was 'ActOff' active offline'||NL||'  [you disconnected]';End;Timer=TTime+Timer0;IF DATATYPE(Cost,'N')&Cost~=0 THEN;DO;IF Cost0>0 THEN Cost1='Total log ISP cost:' Currency||Trunc(Cost*Cost0,2)||NL;ELSE Cost1='Total log online time cost:' Currency'0.00'||NL;End;ELSE Cost1='';IF DATATYPE(TPCost,'N')&DOPCost=1 THEN Cost1=Cost1'Total phone line cost: '||NL||' 'Currency||Trunc(TPCost,2)||NL;Call Convertor();Menu1=NL||NL||'Total log online time:'||NL||' 'Days||Hours||Mins||Timer||NL||Cost1;IF Min~=99999&Min>0 THEN;DO;Timer=Min;Call Convertor();Menu1=Menu1||'Shortest online  time:'||NL||' 'Days||Hours||Mins||Timer||NL||MinDate||NL;End;IF Max~=0 THEN;DO;Timer=Max;Call Convertor();Menu1=Menu1||'Longest online time:'||NL||' 'Days||Hours||Mins||Timer||NL||MaxDate;End;ELSE Menu1='';Call rtezrequest(Menu||Menu1,'O_k|_Averages|Con_trol|Go _Back',Title Version 'Phone Log Analyser Menu','rtez_defaultresponse=2' pubs);SELECT;WHEN rtresult=1 THEN Call Depart();WHEN rtresult=2 THEN Call Averages();WHEN rtresult=3 THEN;DO;Call GUIControl();Call Analyser();End;OTHERWISE NOP;End;Return();Averages:;IF Expert=1 THEN Menu=' 'Trunc(ActOff/SDays,1)' active offlines';ELSE Menu='  [booted off/lost connection]'||NL||' 'Trunc(ActOff/SDays,1)' active offlines'||NL||'  [you disconnected]';Timer=(TTime+Timer0)%SDays;IF DATATYPE(Cost,'N')&Cost~=0 THEN;DO;IF Timer%60>Begin*SDays THEN Cost2=NL||' Online ISP cost:' Currency||Trunc(Compress(Cost)*(((Timer%60)+1)-(Begin*SDays)),2);ELSE Cost2=NL||' Online ISP cost:' Currency'0.00';End;ELSE Cost2='';IF DATATYPE(TPCost,'N')&DOPCost=1 THEN Cost2=Cost2||NL||' Phone line cost: 'Currency||Trunc((TPCost/SDays),2);Call Convertor();Menu2=NL||' Online logged time:'||NL||'  'Days||Hours||Mins||Timer||Cost2;Timer=(TTime+Timer0)%Con;IF DATATYPE(Cost,'N')&Cost~=0 THEN;DO;IF Timer%60>Begin*(Con/SDays) THEN Cost1=NL||' Online ISP cost:' Currency||Trunc(Compress(Cost)*(((Timer%60)+1)-(Begin*(Con/SDays))),2);ELSE Cost1=NL||' Online ISP cost:' Currency'0.00';End;ELSE Cost1='';IF DATATYPE(TPCost,'N')&DOPCost=1&TCalls=1 THEN Cost1=Cost1||NL||' Phone line cost: 'Currency||Trunc(((TPCost/SDays)/(Con/SDays)),2);Call Convertor();Menu3=NL||' Online logged time:'||NL||'  'Days||Hours||Mins||Timer||Cost1;IF Speed.0~=0&DATATYPE(Speed.0,'W') THEN ConSpeed.1=NL||' Connect speed: '||NL||'  'Trunc((Speed.0/ConSpeed.0)/1024,1)||'k ('||Speed.0%ConSpeed.0||' bps)';ELSE ConSpeed.1='';Call rtezrequest('Averages per day:'||Menu2||NL||' 'Trunc(Con/SDays,1)' connections'||NL||' 'Trunc(ReCon/SDays,1)' reconnections'||NL||' 'Trunc(PasOff/SDays,1)' passive offlines'||NL||Menu||NL||NL||'Averages per connection:'||Menu3||ConSpeed.1||NL||' 'Trunc(ReCon/Con,1)' reconnections','O_k|_Weekdays|Con_trol|Go _Back',Title Version 'Phone Log Averages Menu','rtez_defaultresponse=2' pubs);SELECT;WHEN rtresult=1 THEN Call Depart();WHEN rtresult=2 THEN Call Weekdays();WHEN rtresult=3 THEN;DO;Call GUIControl();Call Averages();End;OTHERWISE Call Analyser();End;Return();Weekdays:;Weeks=SDays%7;IF Weeks<1|~DATATYPE(Con,'W') THEN Weeks=1;IF Con<1|~DATATYPE(Con,'W') THEN Con=1;Call rtezrequest('Total connections on the weekday /'||NL||' Average per weekday /'||NL||'  Percentage of weekdays'||NL||NL||'Monday: 'Monday' / 'Trunc(Monday/Weeks,2)' / 'Trunc((Monday/Con)*100,2)'%%'||NL||'Tuesday: 'Tuesday' / 'Trunc(Tuesday/Weeks,2)' / 'Trunc((Tuesday/Con)*100,2)'%%'||NL||'Wednesday: 'Wednesday' / 'Trunc(Wednesday/Weeks,2)' / 'Trunc((Wednesday/Con)*100,2)'%%'||NL||'Thursday: 'Thursday' / 'Trunc(Thursday/Weeks,2)' / 'Trunc((Thursday/Con)*100,2)'%%'||NL||'Friday: 'Friday' / 'Trunc(Friday/Weeks,2)' / 'Trunc((Friday/Con)*100,2)'%%'||NL||'Saturday: 'Saturday' / 'Trunc(Saturday/Weeks,2)' / 'Trunc((Saturday/Con)*100,2)'%%'||NL||'Sunday: 'Sunday' / 'Trunc(Sunday/Weeks,2)' / 'Trunc((Sunday/Con)*100,2)'%%','O_k|Con_trol|Go _Back',Title Version 'Phone Log Averages Menu','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN Call Depart();WHEN rtresult=2 THEN;DO;Call GUIControl();Call Weekdays();End;OTHERWISE Call Averages();End;Return();GUIControl:;Call StatusCheck();IF m=0 THEN;DO;Miami='';End;ELSE;DO;ADDRESS MIAMI.1 'INFO VERSION';Parse Var Result Word1' 'Word2' 'MVer' 'Rest;SELECT;WHEN Word2='MiamiDeluxe' THEN;DO;Miami='Dx';End;OTHERWISE Miami='';End;End;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Control - Control the Miami'Miami' functions'||NL||'GUI - Conrol the Miami'Miami' GUI'||NL||'MSS - Alter how Miami Start/Stop works';Call rtezrequest(Menu,'_Control|_GUI|_MSS|Go _Back',Title Version 'GUI Control Menu','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN;DO;Call ControlMiami();Call GUIControl();End;WHEN rtresult=2 THEN;DO;Call MiamiGUI();Call GUIControl();End;WHEN rtresult=3 THEN;DO;Call MSSControl();Call GUIControl();End;OTHERWISE NOP;End;Return();ControlMiami:;Call StatusCheck();IF m=0 THEN;DO;Menu1='';Menu2='';End;ELSE;DO;ADDRESS MIAMI.1 'INFO VERSION';Parse Var Result Word1' 'Word2' 'MVer' 'Rest;SELECT;WHEN Word2='MiamiDeluxe' THEN;DO;Menu1=NL||'Change DB - ReRead the file "ENVARC:MiamiChangeDB" into Miami'Miami;Menu2='|_Change DB';End;OTHERWISE;IF Left(MVer,1)>3|(SubStr(MVer,1,1)>2&SubStr(MVer,3,1)>1) THEN;DO;Menu1=NL||'Change DB - ReRead the file "ENVARC:MiamiChangeDB" into Miami'Miami;Menu2='|_Change DB';End;ELSE;DO;Menu1='';Menu2='';End;End;End;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Load Settings - Loads into Miami'Miami' the selected settings'||Menu1;Call rtezrequest(Menu,'_Load Settings'Menu2'|Go _Back',Title Version 'Miami'Miami' Control Menu','rtez_defaultresponse=0' pubs);Call StatusCheck();SELECT;WHEN rtresult=1 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE;DO;Config=rtfilerequest('Miami:',,'Choose Miami'Miami' Settings...','_Load' pubs);IF rtresult~=0&Exists(Config)&Config~=''&Show('P','MIAMI.1') THEN;DO;IF m=2 THEN;DO;Call rtezrequest("About to load: '"Config"'"||NL||"Are you sure you wish to load these settings?"||NL||"This will most likely stop your current"||NL||"connection from functioning correctly","_Yes|_No",Title Version "Miami"Miami "Settings Requestor","rtez_defaultresponse=0" pubs);IF rtresult=1 THEN ADDRESS MIAMI.1 'LOADSETTINGS' Config;End;ELSE ADDRESS MIAMI.1 'LOADSETTINGS' Config;End;End;Call ControlMiami();End;WHEN rtresult=2 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE;DO;IF Exists('ENVARC:MiamiChangeDB') THEN;DO;ADDRESS MIAMI.1 'CHANGEDB';Call rtezrequest('Loaded ENVARC:MiamiChangeDB file to'||NL||'update the 'Miami'Miami settings database','_Ok',Title Version 'Miami'Miami 'ChangeDB Requestor','rtez_defaultresponse=0' pubs);Call ControlMiami();End;ELSE;DO;Call rtezrequest("There is no 'ENVARC:MiamiChangeDB' file to"||NL||"update the Miami"Miami" settings database","_Ok",Title Version "Miami"Miami "ChangeDB Error Requestor","rtez_defaultresponse=0" pubs);Call ControlMiami();End;End;End;OTHERWISE NOP;End;Return();MiamiGUI:;Call StatusCheck();IF m=0 THEN;DO;Menu1='';Menu2='';End;ELSE;DO;ADDRESS MIAMI.1 'INFO VERSION';Parse Var Result Word1' 'Word2' 'MVer' 'Rest;SELECT;WHEN Word2='MiamiDeluxe' THEN;DO;Menu1=NL||'LockGUI - Locks the pointer to a busy one in Miami'||NL||'UnLockGUI - UnLocks the pointer to a non busy one in Miami';Menu2='|_Lock|_UnLockGUI';End;OTHERWISE;IF Left(MVer,1)>3|(SubStr(MVer,1,1)>2&SubStr(MVer,3,1)>1) THEN;DO;Menu1=NL||'LockGUI - Locks the pointer to a busy one in Miami'||NL||'UnLockGUI - UnLocks the pointer to a non busy one in Miami';Menu2='|_Lock|_UnLockGUI';End;ELSE;DO;Menu1='';Menu2='';End;End;End;IF Expert=1 THEN Menu=MenuE;ELSE Menu='Show - Pop up the Miami GUI'||NL||'Hide - Hide the Miami GUI'||NL||'KillGUI - Hide and unlock the Miami GUI so it can be flushed'||Menu1;Call rtezrequest(Menu,'_Show|_Hide|_KillGUI'Menu2'|Go _Back',Title Version 'Miami'Miami' GUI Control Menu','rtez_defaultresponse=0' pubs);Call StatusCheck();SELECT;WHEN rtresult=0 THEN NOP;WHEN rtresult=1 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE ADDRESS MIAMI.1 'SHOW';Call MiamiGUI();End;WHEN rtresult=2 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE ADDRESS MIAMI.1 'HIDE';Call MiamiGUI();End;WHEN rtresult=3 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE ADDRESS MIAMI.1 'KILLGUI';Call MiamiGUI();End;WHEN rtresult=4 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE;DO;ADDRESS MIAMI.1 'LOCKGUI';Call MiamiGUI();End;End;WHEN rtresult=5 THEN;DO;IF m=0 THEN;DO;Call ResultCheck();Call OnlineReq();End;ELSE;DO;ADDRESS MIAMI.1 'UNLOCKGUI';Call MiamiGUI();End;End;End;Return();MSSControl:;Call rtezrequest('MSS GUI - Miami Start/Stop GUI Preferences'||NL||'Responses - Miami Start/Stop Reactions & Responces'||NL||'Prefs - Load up the Miami Start/Stop Preferences','MSS _GUI|_Responces|_Prefs|Go _Back',Title Version 'MSS Control Menu','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN;DO;Call MSSGUI();Call MSSControl();End;WHEN rtresult=2 THEN;DO;Call MSSResp();Call MSSControl();End;WHEN rtresult=3 THEN;DO;ReRead=1;Call MSSPrefs();Call Prefs();Call MSSControl();End;OTHERWISE NOP;End;Return();MSSGUI:;IF Always=1 THEN G='On';ELSE G='Off';IF Expert=1 THEN E='On';ELSE E='Off';IF NoVerify=1 THEN V='On';ELSE V='Off';SELECT;WHEN Dialing1=0 THEN D='Off';WHEN Dialing1=1 THEN D='On - KillGUI';OTHERWISE D='On - Hide';End;IF LargeGUI=1 THEN L='On';ELSE L='Off';Call rtezrequest('Now 'G' - Always (GUI) - MSS GUI always available'||NL||'Now 'E' - Expert - MSS explainations of the buttons appearing'||NL||'Now 'D' - Dial GUI - Show Miami s GUI while connecting'||NL||'Now 'L' - Large GUI - Show extra menu options at once at the expense of screen space'||NL||'Now 'V' - NoVerify - No verification of going Offline/Quitting/Force Quitting','_Always('G')|_Expert('E')|_Dial GUI('D')|_Large GUI('L')|No_Verify('V')|Go _Back',Title Version 'MSS GUI Control Menu','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN;DO;IF Always=1 THEN Always=0;ELSE Always=1;Call MSSGUI();End;WHEN rtresult=2 THEN;DO;IF Expert=1 THEN Expert=0;ELSE Expert=1;Call MSSGUI();End;WHEN rtresult=3 THEN;DO;Call rtezrequest('Now 'D' - Dial GUI - Show Miami s GUI while connecting'||NL||NL||'You can set it to:'||NL||'On (KillGUI) - Hide & Release Miami s GUI so its fluashable'||NL||'On (Hide) - Hide Miami s GUI'||NL||'Off - Leave Miami s GUI as it is'||NL||'Now 'V' - NoVerify - No verification of going Offline/Quitting/Force Quitting','On (_KillGUI)|On (_Hide)|_Off|_Cancel',Title Version 'MSS GUI Control Dial GUI','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN Dialing1=1;WHEN rtresult=2 THEN Dialing1=2;WHEN rtresult=3 THEN Dialing1=0;OTHERWISE NOP;End;Call MSSGUI();End;WHEN rtresult=4 THEN;DO;IF LargeGUI=1 THEN LargeGUI=0;ELSE LargeGUI=1;Call MSSGUI();End;WHEN rtresult=5 THEN;DO;IF NoVerify=1 THEN NoVerify=0;ELSE NoVerify=1;Call MSSGUI();End;OTHERWISE NOP;End;Return();MSSResp:;IF NoAutoOnline=1 THEN N='On';ELSE N='Off';SELECT;WHEN Sync=1 THEN S='General Sync';WHEN Sync=2 THEN S='Fast Sync';OTHERWISE;S='A-Sync';End;Call rtezrequest('Now 'Time' - Time - Set the time to wait between loading programs in seconds'||NL||'Now 'Wait' - Wait - Wait time in seconds for Miami to get online before asking what to do'||NL||'Now 'N' - NoAutoOnline (NAO) - MSS expecting Miami not to go auto online'||NL||'Now 'S' - Method of loading the Phone Log','_Time('Time')|_Wait('Wait')|_NoAutoOnline('N')|_Sync('S')|Go _Back',Title Version 'MSS Responces Control Menu','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=1 THEN;DO;Time=rtgetlong(Time_Old,'Miami Start/Stop Time Prefs'||NL||'This will set the time between loading programs in seconds'||NL||'Default = 5 seconds',Title 'MSS Time Control Menu','_Ok|_Cancel','rtgl_min=0 rtgl_max=75' pubs);IF rtresult=0 THEN Time=Time_Old;Call MSSResp();End;WHEN rtresult=2 THEN;DO;Wait=rtgetlong(Wait_Old,'Miami Start/Stop Wait Prefs'||NL||'This will set the time to wait for Miami to get online in seconds'||NL||'Default = 60 seconds'||NL||'Minimum = 20 seconds, Maximum = 3600 seconds(60 Minutes)',Title 'MSS Time Control Menu','_Ok|_Cancel','rtgl_min=20 rtgl_max=3600' pubs);IF rtresult=0 THEN Wait=Wait_Old;Call MSSResp();End;WHEN rtresult=3 THEN;DO;IF NoAutoOnline=1 THEN NoAutoOnline=0;ELSE NoAutoOnline=1;Call MSSResp();End;WHEN rtresult=4 THEN;DO;Sync_Old=Sync;SELECT;WHEN Sync=1 THEN S='General Synchronous';WHEN Sync=2 THEN S='Fast Synchronous';OTHERWISE;S='A-Synchronous';End;Call rtezrequest('Synchronous(Sync) loading method is currently:'||NL||'  'S||NL||NL||'Please choose the prefered loading method'||NL||NL||'A-Sync is the fastest for most systems'||NL||'Fast Sync is best for FFS system with a _FAST_ CPU','_A-Sync|_General Sync|_Fast Sync|_Cancel',Title 'Miami Loading Menu','rtez_defaultresponse=1' pubs);SELECT;WHEN rtresult=1 THEN;DO;Sync=0;End;WHEN rtresult=2 THEN;DO;Sync=1;End;WHEN rtresult=3 THEN;DO;Sync=2;End;OTHERWISE NOP;End;Call MSSResp();End;OTHERWISE NOP;End;Return();MiamiChecking:;i=0;DO UNTIL Show('P','MIAMI.1')>0|i>16;Call Delay(f);i=i+1;End;Call NoMiami();Return();MSSPrefs:;CurrentDir=Pragma('D');IF Right(CurrentDir,1)~=':'|Right(CurrentDir,1)~='/' THEN CurrentDir=CurrentDir||'/';IF Exists(CurrentDir||'MSSPrefs') THEN;DO;MSSPrefs=CurrentDir||'MSSPrefs';Call MSSPrefsRun();End;ELSE;DO;IF Exists('Miami:MSSPrefs') THEN;DO;MSSPrefs='Miami:MSSPrefs';Call MSSPrefsRun();End;ELSE;DO;IF Exists('SYS:Prefs/MSSPrefs') THEN;DO;MSSPrefs='SYS:Prefs/MSSPrefs';Call MSSPrefsRun();End;ELSE;DO;IF Exists('Rexx:MSSPrefs') THEN;DO;MSSPrefs='Rexx:MSSPrefs';Call MSSPrefsRun();End;ELSE;DO;MSSPrefs=rtfilerequest(CurrentDir,'MSSPrefs','Select MSSPrefs File...','_Run',pubs);IF rtresult THEN Call MSSPrefsRun();End;End;End;End;Return();MSSPrefsRun:;Check=1;CheckOpen=Open(MSS,MSSPrefs,'R');IF CheckOpen=0 THEN;DO;Call rtezrequest('Unable to open "'MSSPrefs'"'||NL||'make sure the file exists, Check protection bits, etc','_Retry|Con_trol|_Cancel',Title Version 'MSSPrefs Requestor',pubs);Call Close(MSS);Check=0;SELECT;WHEN rtresult=1 THEN Call MSSPrefs();WHEN rtresult=2 THEN Call GUIControl();OTHERWISE NOP;End;End;IF Check~=0 THEN;DO;Check=ReadCH(MSS,88);Call Close(MSS);IF Upper(Right(Check,8))='MSSPREFS' THEN;DO;PRAGMA('S',15000);ADDRESS COMMAND '"'||MSSPrefs||'" '||Version;End;ELSE;DO;Call rtezrequest('Incorrect file was attempted to be loaded as MSSPrefs','_Find MSSPrefs|Con_trol|O_k',Title Version 'Incorrect MSSPrefs Menu','rtez_defaultresponse=0' pubs);Check=0;IF rtresult THEN;DO;MSSPrefs=rtfilerequest(CurrentDir,'MSSPrefs','Select MSSPrefs File...','_Run',pubs);IF rtresult THEN Call MSSPrefsRun();End;IF rtresult=2 THEN Call GUIControl();End;End;Check=0;Return();NoMiami:;IF ~Show('P','MIAMI.1') THEN;DO;Call rtezrequest('Miami was not loaded!'||NL||'Make sure it is named 'MiamiExe,'_Retry|Con_trol|_Cancel',Title Version 'Miami Not Found Requestor',pubs);SELECT;WHEN rtresult=1 THEN Call MiamiLoad();WHEN rtresult=2 THEN;DO;Call GUIControl();Call NoMiami();End;OTHERWISE Call Depart();End;End;Return();DisQuit:;i=0;SELECT;WHEN Arg(1)=1 THEN;DO;IF NoVerify~=1 THEN Call Verify(1);IF NoShutdown~=1 THEN Call ShutMenu(Arg(1));Call StatusCheck();IF m>0 THEN ADDRESS MIAMI.1 'OFFLINE';DO UNTIL i=20;Call Delay(f*1);Call StatusCheck();IF m=2 THEN Menu='disconnected';ELSE Call Depart();i=i+1;End;End;WHEN Arg(1)=2 THEN;DO;IF NoVerify~=1 THEN Call Verify(2);IF NoShutdown~=1 THEN Call ShutMenu(Arg(1));Call StatusCheck();IF m>0 THEN ADDRESS MIAMI.1 'QUIT';DO UNTIL i=20;Call Delay(f*1);IF Show('P','MIAMI.1') THEN Menu='quit';ELSE Call Depart();i=i+1;End;End;WHEN Arg(1)=3 THEN;DO;IF NoVerify~=1 THEN Call Verify(3);IF NoShutdown~=1 THEN Call ShutMenu();Call StatusCheck();IF m>0 THEN ADDRESS MIAMI.1 'QUITFORCE';DO UNTIL i=20;Call Delay(f*1);IF Show('P','MIAMI.1') THEN Menu='force quit';ELSE Call Depart();i=i+1;End;End;OTHERWISE Call Depart();End;Call rtezrequest('Miami has not 'Menu'!'||NL||'What do you wish to do?','_Wait More|_Retry|Con_trol|_Cancel',Title Version 'Miami Not Found Requestor',pubs);SELECT;WHEN rtresult=1 THEN;DO;Call Delay(f*10);Call DisQuit(Arg(1));End;WHEN rtresult=2 THEN Call DisQuit(Arg(1));WHEN rtresult=3 THEN;DO;Call GUIControl();Call DisQuit(Arg(1));End;OTHERWISE Depart();End;Return();Verify:;SELECT;WHEN Arg(1)=1 THEN Menu='disconnect';WHEN Arg(1)=2 THEN Menu='quit';WHEN Arg(1)=3 THEN Menu='force quit';End;Call rtezrequest('Are you sure you want to 'Menu' Miami?','_Yes|Con_trol|_No',Title Version 'Verification Requestor','rtez_defaultresponse=0' pubs);SELECT;WHEN rtresult=0 THEN;DO;IF Offline=1|Quit=1|ForceQuit=1 THEN Call Depart();ELSE;Call OffLineReq();End;WHEN rtresult=2 THEN;DO;Call GUIControl();Call DisQuit(Arg(1));End;OTHERWISE NOP;End;Return();ShutMenu:;Call rtezrequest('Do you wish to run a Shutdown file?','_Use Shutdown|_No Shutdown|Con_trol|Go _Back',Title Version 'Shutdown Menu','rtez_defaultresponse=1' pubs);SELECT;WHEN rtresult=1 THEN;DO;Call StatusCheck();SELECT;WHEN m~=2&Arg(1)=1 THEN;DO;Call ResultCheck();Call OnlineReq();End;WHEN m=0&Arg(1)>1 THEN;DO;Call ResultCheck();Call OnlineReq();End;OTHERWISE;SS=69;Call Shutdown();End;End;WHEN rtresult=2 THEN NOP;WHEN rtresult=3 THEN;DO;Call GUIControl();Call ShutMenu();End;OTHERWISE Call OfflineReq();End;Return();ResultCheck:;SELECT;WHEN m=0 THEN Call Already('not running Miami yet');WHEN m=1 THEN Call Already('already offline');WHEN m=2 THEN Call Already('already online');End;Return();Already:;Call rtezrequest('You are 'ARG(1),'Con_trol|O_k',Title Version 'You are 'ARG(1)' Menu','rtez_defaultresponse=0' pubs);IF rtresult THEN Call GUIControl();Return();Error:;Call rtezrequest("Error!  Please EMail lanky at 'sykoe@sub.net.au' with your Miami Phone Log!",'Con_trol|O_k',Title Version 'Error Menu','rtez_defaultresponse=0' pubs);IF rtresult THEN Call GUIControl();Return();Depart:;Details=0;IF Always THEN Call FullGUI();ELSE Exit